package com.uacp.sgb.negocio.servicios;

import java.util.ArrayList;
import java.util.List;

import com.uacp.sgb.datos.dominio.entidades.Adquisicion;
import com.uacp.sgb.datos.dominio.entidades.ComprobanteCompra;
import com.uacp.sgb.datos.dominio.entidades.Dependencia;
import com.uacp.sgb.datos.dominio.entidades.Equipo;
import com.uacp.sgb.datos.dominio.entidades.GuiaDeRemision;
import com.uacp.sgb.datos.dominio.entidades.Mueble;
import com.uacp.sgb.datos.dominio.entidades.OrdenCompra;
import com.uacp.sgb.datos.dominio.entidades.Pecosa;
import com.uacp.sgb.datos.dominio.entidades.Proveedor;
import com.uacp.sgb.datos.dominio.entidades.TipoAdquisicion;
import com.uacp.sgb.datos.dominio.entidades.TipoBien;
import com.uacp.sgb.datos.dominio.entidades.Trabajador;
import com.uacp.sgb.datos.dominio.entidades.Vehiculo;
import com.uacp.sgb.datos.dominio.persistencia.dao.AdquisicionDao;
import com.uacp.sgb.datos.dominio.persistencia.dao.EquipoDao;
import com.uacp.sgb.datos.dominio.persistencia.dao.MuebleDao;
import com.uacp.sgb.datos.dominio.persistencia.dao.ProveedorDao;

public class ServicioAdquisicion 
{
	private Adquisicion adquisicion;
	
	private List<Equipo> equipos;
	private List<Mueble> muebles;
	private List<Vehiculo> vehiculos;
	private Proveedor proveedor;
	private TipoBien tipoBien;

	
	public ServicioAdquisicion() 
	{
		adquisicion = new Adquisicion();
		
		equipos = new ArrayList<>();
		muebles = new ArrayList<>();
		vehiculos = new ArrayList<>();
	}

	public void setMuebles(List<Mueble> muebles) 
	{
		this.muebles = muebles;		
	}

	public void setEquipos(List<Equipo> equipos) 
	{
		this.equipos = equipos;
	}
	
	public void setVehiculos(List<Vehiculo> vehiculos) 
	{
		this.vehiculos = vehiculos;
	}
	
	public void setTipoAdquisicion(TipoAdquisicion tipoAdquisicion)
	{
		adquisicion.setTipoAdquisicion(tipoAdquisicion);
	}
	
	public void guardarAdquisicion() 
	{
		System.out.println("Guardo adquisicion 1");
		
		String estado = null;
		
		switch(adquisicion.getTipoAdquisicion().getTipo())
		{
		case "donacion": estado = "B"; break;
		case "compra": estado = "N"; break;
		case "importacion": estado = "N"; break;
		}
		
		for(Equipo equipo: equipos)
		{
			equipo.setArea(adquisicion.getArea());
			equipo.setTrabajador(adquisicion.getTrabajador());
			equipo.setTipoBien(tipoBien);
			equipo.setEstado(estado);
			
			EquipoDao.guardar(equipo);
		}
		
		for(Mueble mueble: muebles)
		{
			mueble.setArea(adquisicion.getArea());
			mueble.setTrabajador(adquisicion.getTrabajador());
			mueble.setTipoBien(tipoBien);
			mueble.setEstado(estado);
			MuebleDao.guardar(mueble);
		}
		
		adquisicion.setEquipos(equipos);
		adquisicion.setMuebles(muebles);
		
		Proveedor prov = ProveedorDao.buscar(proveedor.getRuc());
		
		if(prov == null)
		{
			ProveedorDao.guardar(proveedor);
			adquisicion.setProveedor(proveedor);
		}
		else
			adquisicion.setProveedor(prov);
			
		AdquisicionDao.guardar(adquisicion);
		
		System.out.println("Guardo adquisicion 2");
	}
	
	public void setPecosa(Pecosa pecosa) 
	{
		adquisicion.setPecosa(pecosa);
	}

	public void setOrdenCompra(OrdenCompra ordenCompra) 
	{
		adquisicion.setOrdenCompra(ordenCompra);
	}

	public void setProveedor(Proveedor proveedor) 
	{
		this.proveedor = proveedor;
	}

	public void setComprobanteCompra(ComprobanteCompra comprobante) 
	{
		this.proveedor.setComprobante(comprobante);
	}

	public void setArea(Dependencia area) 
	{
		adquisicion.setArea(area);
	}

	public void setTrabajador(Trabajador trabajador) 
	{
		adquisicion.setTrabajador(trabajador);
	}

	public void setTipoBien(TipoBien tipoBien) 
	{
		this.tipoBien = tipoBien;		
	}

	public void setGuiaDeRemision(GuiaDeRemision guiaderemision) 
	{
		adquisicion.setGuiaDeRemision(guiaderemision);
	}
}
